// FragmentActivity.java
package com.example.learningnote;

import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

// 1. 实现 Fragment 定义的接口
public class FragmentActivity extends AppCompatActivity implements CommunicatingFragment.OnMessageSendListener {

    private TextView activityMessageTextView;
    private Button sendToFragmentButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // EdgeToEdge.enable(this); // 隐藏沉浸式
        setContentView(R.layout.activity_fragment);

        activityMessageTextView = findViewById(R.id.activity_message_textview); // 获取 Activity 中的 TextView
        sendToFragmentButton = findViewById(R.id.send_to_fragment_button);     // 获取 Activity 中的 Button

        // --- 添加 Fragment ---
        // 检查是否已存在 Fragment，避免重复添加 (例如屏幕旋转后)
        if (savedInstanceState == null) {
            // 创建 CommunicatingFragment 实例
            CommunicatingFragment communicatingFragment = new CommunicatingFragment();
            // 创建另一个 Fragment 实例 (可以是 MyListFragment 或其他)
            MyListFragment fragment = new MyListFragment(); // 或者其他 Fragment
            getSupportFragmentManager()
                    .beginTransaction()
                    // 将 CommunicatingFragment 添加到左侧容器
                    .add(R.id.fragment_bottom_left, communicatingFragment, "communicating_fragment_tag") // 添加一个 Tag 以便查找
                    // 将另一个 Fragment 添加到右侧容器
                    .add(R.id.fragment_bottom_right, fragment)
                    .commit();
        }

        // --- Activity -> Fragment 通信 ---
        sendToFragmentButton.setOnClickListener(v -> {
            // 3. Activity 获取 Fragment 实例并调用其公共方法
            // 通过 ID 或 Tag 找到 Fragment
            // CommunicatingFragment fragment = (CommunicatingFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_bottom_left);
            // 或者通过 Tag 查找:
            CommunicatingFragment fragment = (CommunicatingFragment) getSupportFragmentManager().findFragmentByTag("communicating_fragment_tag");
            if (fragment != null) {
                String messageForFragment = "你好 Fragment，我是 Activity！";
                fragment.updateText(messageForFragment); // 调用 Fragment 的公共方法
            } else {
                Toast.makeText(this, "找不到 CommunicatingFragment", Toast.LENGTH_SHORT).show();
            }
        });
    }

    // 2. 实现接口方法 (用于 Fragment -> Activity)
    @Override
    public void onMessageSend(String message) {
        // 当 Fragment 调用接口方法时，这个方法会被执行
        activityMessageTextView.setText("来自 Fragment 的消息: " + message);
        Toast.makeText(this, "收到 Fragment 消息: " + message, Toast.LENGTH_SHORT).show();
    }
}
